Proving Linearizability Using Forward Simulations
نویسندگان
چکیده
Linearizability is the standard correctness criterion concurrent datastructures such as stacks and queues. It allows to establish observational refine-ment between a concurrent implementation and an atomic reference implemen-tation. Proving linearizability requires identifying linearization points for eachmethod invocation along all possible computations, leading to valid sequentialexecutions, or alternatively, establishing forward and backward simulations. Inboth cases, carrying out proofs is hard and complex in general. In particular,backward reasoning is difficult in the context of programs with data structures,and strategies for identifying statically linearization points cannot be defined forall existing implementations. In this paper, we show that, contrary to commonbelief, many such complex implementations, including, e.g., the Herlihy&Wing;Queue and the Time-Stamped Stack, can be proved correct using only forwardsimulation arguments. This leads to simple and natural correctness proofs forthese implementations that are amenable to automation.
منابع مشابه
A Constructive Approach for Proving Data Structures' Linearizability
We present a comprehensive methodology for proving correctness of concurrent data structures. We exemplify our methodology by using it to give a roadmap for proving linearizability of the popular Lazy List implementation of the concurrent set abstraction. Correctness is based on our key theorem, which captures sufficient conditions for linearizability. In contrast to prior work, our conditions ...
متن کاملA Generic Logic for Proving Linearizability
Linearizability is a commonly accepted notion of correctness for libraries of concurrent algorithms, and recent years have seen a number of proposals of program logics for proving it. Although these logics differ in technical details, they embody similar reasoning principles. To explicate these principles, we propose a logic for proving linearizability that is generic: it can be instantiated wi...
متن کاملA Generic Logic for Proving Linearizability (Extended Version)
Linearizability is a commonly accepted notion of correctness for libraries of concurrent algorithms, and recent years have seen a number of proposals of program logics for proving it. Although these logics differ in technical details, they embody similar reasoning principles. To explicate these principles, we propose a logic for proving linearizability that is generic: it can be instantiated wi...
متن کاملAutomatically Proving Linearizability
This paper presents a practical automatic verification procedure for proving linearizability (i.e., atomicity and functional correctness) of concurrent data structure implementations. The procedure employs a novel instrumentation to verify logically pure executions, and is evaluated on a number of standard concurrent stack, queue and set algorithms.
متن کاملVerifying Linearizability on TSO Architectures
Linearizability is the standard correctness criterion for fine-grained, non-atomic concurrent algorithms, and a variety of methods for verifying linearizability have been developed. However, most approaches assume a sequentially consistent memory model, which is not always realised in practice. In this paper we define linearizability on a weak memory model: the TSO (Total Store Order) memory mo...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2017